package moe.feng.nhentai.ui.fragment.settings; import android.content.DialogInterface; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.widget.AppCompatSeekBar; import android.support.v7.widget.AppCompatTextView; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.SeekBar; import moe.feng.nhentai.R; import moe.feng.nhentai.util.Settings; import moe.feng.nhentai.view.pref.Preference; import moe.feng.nhentai.view.pref.SwitchPreference; public class SettingsAppearance extends PreferenceFragment implements Preference.OnPreferenceClickListener, android.preference.Preference.OnPreferenceChangeListener { private Preference mCardCountPref; private SwitchPreference mHDImagePref, mFullHDPreviewPref, mAllowStandaloneTaskPref; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings_ui); getActivity().setTitle(R.string.category_ui); mCardCountPref = (Preference) findPreference("card_count"); mHDImagePref = (SwitchPreference) findPreference("hd_image"); mFullHDPreviewPref = (SwitchPreference) findPreference("full_image_preview"); mAllowStandaloneTaskPref = (SwitchPreference) findPreference("allow_standalone_task"); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { mAllowStandaloneTaskPref.setEnabled(false); mAllowStandaloneTaskPref.setSummary(R.string.set_title_android_too_old_desc); } int cardCount = mSets.getInt(Settings.KEY_CARDS_COUNT, -1); mCardCountPref.setSummary( getString( R.string.set_title_cards_count_summary, cardCount == -1 ? getResources().getStringArray(R.array.set_cards_count_options)[0] : String.valueOf(cardCount) ) ); mHDImagePref.setChecked(mSets.getBoolean(Settings.KEY_LIST_HD_IMAGE, false)); mFullHDPreviewPref.setChecked(mSets.getBoolean(Settings.KEY_FULL_IMAGE_PREVIEW, false)); mAllowStandaloneTaskPref.setChecked(mSets.getBoolean(Settings.KEY_ALLOW_STANDALONE_TASK, true) && mAllowStandaloneTaskPref.isEnabled()); mCardCountPref.setOnPreferenceClickListener(this); mHDImagePref.setOnPreferenceChangeListener(this); mFullHDPreviewPref.setOnPreferenceChangeListener(this); mAllowStandaloneTaskPref.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceClick(android.preference.Preference pref) { if (pref == mCardCountPref) { showCardCountDialog(); return true; } return false; } private void showCardCountDialog() { new AlertDialog.Builder(getActivity()) .setItems(R.array.set_cards_count_options, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { if (i == 0) { mSets.putInt(Settings.KEY_CARDS_COUNT, -1); mCardCountPref.setSummary( getString( R.string.set_title_cards_count_summary, getResources().getStringArray(R.array.set_cards_count_options)[0] ) ); showRestartTips(); } else { showCardCountCustomDialog(); } } }) .setTitle(R.string.set_title_cards_count) .show(); } private void showCardCountCustomDialog() { ContextThemeWrapper wrapper = new ContextThemeWrapper(getActivity().getApplicationContext(), R.style.Theme_NHBooks_Light); View view = LayoutInflater.from(wrapper) .inflate(R.layout.dialog_set_card_count,(ViewGroup) getView()); final AppCompatTextView numberText = (AppCompatTextView) view.findViewById(R.id.number_text); final AppCompatSeekBar seekBar = (AppCompatSeekBar) view.findViewById(R.id.seekbar); int cardCount = mSets.getInt(Settings.KEY_CARDS_COUNT, 2); if (cardCount < 2) { cardCount = 2; } numberText.setText(String.valueOf(cardCount)); seekBar.setKeyProgressIncrement(1); seekBar.setMax(8); seekBar.setProgress(cardCount - 2); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { numberText.setText(String.valueOf(i + 2)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); new AlertDialog.Builder(getActivity()) .setView(view) .setTitle(R.string.set_title_cards_count) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { mSets.putInt(Settings.KEY_CARDS_COUNT, seekBar.getProgress() + 2); mCardCountPref.setSummary( getString( R.string.set_title_cards_count_summary, String.valueOf(seekBar.getProgress() + 2) ) ); showRestartTips(); } }) .show(); } @Override public boolean onPreferenceChange(android.preference.Preference pref, Object o) { if (pref == mHDImagePref) { Boolean b = (Boolean) o; mSets.putBoolean(Settings.KEY_LIST_HD_IMAGE, b); mHDImagePref.setChecked(b); showRestartTips(); return true; } if (pref == mFullHDPreviewPref) { Boolean b = (Boolean) o; mSets.putBoolean(Settings.KEY_FULL_IMAGE_PREVIEW, b); mFullHDPreviewPref.setChecked(b); return true; } if (pref == mAllowStandaloneTaskPref) { Boolean b = (Boolean) o; mSets.putBoolean(Settings.KEY_ALLOW_STANDALONE_TASK, b); mAllowStandaloneTaskPref.setChecked(b); return true; } return false; } }